2023/12/23716字符

预编译

  1. 创建AO对象
  2. 找形参和变量声明,将变量和形参名作为AO属性名,值为undefined
  3. 将实参值和形参统一
  4. 在函数体里面找函数声明,值赋予函数体
test();  //--> a
function test () {
    console.log('a');
}

console.log(a);  //--> 123
var a = 123;

函数声明整体提升,变量 声明提升(不能解决所有问题)

var a = 10;
(function a () {
    a = 20;
    console.log(a);  //--> f a () {...}
}())
console.log(a);  //--> 10
var x = 1, y = z = 0;
function add (n) {
    return n = n + 1;
}
y = add(x);  //--> 4
function add (n) {
    return n = n + 3;
}
z = add(x);  //--> 4